www.gusucode.com > 基于Visual C++高级界面特效制作百例源码程序 > 基于Visual C++高级界面特效制作百例源码程序/code/char18/PropSheet_Wizard/PageDlg.cpp
// PageDlg.cpp : implementation file // #include "stdafx.h" #include "Propsheet Wizard.h" #include "PageDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CPageDlg dialog CPageDlg::CPageDlg(CWnd* pParent /*=NULL*/) : CDialog(CPageDlg::IDD, pParent) { //{{AFX_DATA_INIT(CPageDlg) m_caption = _T(""); m_class = _T(""); //}}AFX_DATA_INIT m_bClassChanged = FALSE; } void CPageDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CPageDlg) DDX_Control(pDX, IDC_EDIT_CLASS, m_ctrlClass); DDX_Control(pDX, IDOK, m_ok); DDX_Text(pDX, IDC_EDIT_CAPTION, m_caption); DDX_Text(pDX, IDC_EDIT_CLASS, m_class); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CPageDlg, CDialog) //{{AFX_MSG_MAP(CPageDlg) ON_EN_CHANGE(IDC_EDIT_CAPTION, OnChangeEditCaption) ON_EN_CHANGE(IDC_EDIT_CLASS, OnChangeEditClass) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CPageDlg message handlers void CPageDlg::OnChangeEditCaption() { if (!m_bClassChanged) { UpdateData (); m_class = _T ("C") + ToSafeName (m_caption); UpdateData (FALSE); } UpdateOk (); } void CPageDlg::OnChangeEditClass() { if (CWnd::GetFocus () == &m_ctrlClass) m_bClassChanged = TRUE; UpdateOk (); } void CPageDlg::OnOK() { if (m_caption.IsEmpty () || m_class.IsEmpty ()) return; for (int i = 0;i < m_class.GetLength ();i++) if (!isalnum (m_class[i]) && m_class[i] != '_') return; CDialog::OnOK(); } void CPageDlg::UpdateOk () { UpdateData (); BOOL bValidClass = TRUE; for (int i = 0;i < m_class.GetLength ();i++) if (!isalnum (m_class[i]) && m_class[i] != '_') { bValidClass = FALSE; break; } m_ok.EnableWindow (!m_caption.IsEmpty () && !m_class.IsEmpty () && bValidClass); } BOOL CPageDlg::PreTranslateMessage(MSG* pMsg) { // Let the ToolTip process this message. m_tooltip.RelayEvent(pMsg); return CDialog::PreTranslateMessage(pMsg); } BOOL CPageDlg::OnInitDialog() { m_bClassChanged = (m_class != _T ("C") + ToSafeName (m_caption)) && m_class.GetLength () != 0; CDialog::OnInitDialog(); // Create the ToolTip control. m_tooltip.Create(this); m_tooltip.Activate(TRUE); // TODO: Use one of the following forms to add controls: m_tooltip.AddTool (GetDlgItem (IDC_EDIT_CAPTION), IDS_PAGEDLG_EDIT_CAPTION_TIP); m_tooltip.AddTool (GetDlgItem (IDC_EDIT_CLASS), IDS_PAGEDLG_EDIT_CLASS_TIP); UpdateOk (); return TRUE; } CString CPageDlg::ToSafeName (LPCTSTR lpszName) { CString res = _T (""); BOOL bSpace = TRUE; for (int i = 0;lpszName[i];i++) { if (isalnum (lpszName[i]) || lpszName[i] == '_') { if (bSpace) { res += toupper (lpszName[i]); bSpace = FALSE; } else res += lpszName[i]; } else if (isspace (lpszName[i])) bSpace = TRUE; } return (res); }